using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
namespace Microsoft.Phone.Controls.Maps.PlatformServices
{
	[GeneratedCode("System.Runtime.Serialization", "4.0.0.0"), DebuggerStepThrough, DataContract(Name = "UserProfile", Namespace = "http://dev.virtualearth.net/webservices/v1/common")]
	internal class UserProfile : INotifyPropertyChanged
	{
		private Heading CurrentHeadingField;
		private UserLocation CurrentLocationField;
		private DeviceType DeviceTypeField;
		private DistanceUnit DistanceUnitField;
		private string IPAddressField;
		private ShapeBase MapViewField;
		private SizeOfint ScreenSizeField;
		public event PropertyChangedEventHandler PropertyChanged
		{
			[MethodImpl(32)]
			add
			{
				this.PropertyChanged = (PropertyChangedEventHandler)Delegate.Combine(this.PropertyChanged, value);
			}
			[MethodImpl(32)]
			remove
			{
				this.PropertyChanged = (PropertyChangedEventHandler)Delegate.Remove(this.PropertyChanged, value);
			}
		}
		[DataMember]
		internal Heading CurrentHeading
		{
			get
			{
				return this.CurrentHeadingField;
			}
			set
			{
				if (!object.ReferenceEquals(this.CurrentHeadingField, value))
				{
					this.CurrentHeadingField = value;
					this.RaisePropertyChanged("CurrentHeading");
				}
			}
		}
		[DataMember]
		internal UserLocation CurrentLocation
		{
			get
			{
				return this.CurrentLocationField;
			}
			set
			{
				if (!object.ReferenceEquals(this.CurrentLocationField, value))
				{
					this.CurrentLocationField = value;
					this.RaisePropertyChanged("CurrentLocation");
				}
			}
		}
		[DataMember]
		internal DeviceType DeviceType
		{
			get
			{
				return this.DeviceTypeField;
			}
			set
			{
				if (!this.DeviceTypeField.Equals(value))
				{
					this.DeviceTypeField = value;
					this.RaisePropertyChanged("DeviceType");
				}
			}
		}
		[DataMember]
		internal DistanceUnit DistanceUnit
		{
			get
			{
				return this.DistanceUnitField;
			}
			set
			{
				if (!this.DistanceUnitField.Equals(value))
				{
					this.DistanceUnitField = value;
					this.RaisePropertyChanged("DistanceUnit");
				}
			}
		}
		[DataMember]
		internal string IPAddress
		{
			get
			{
				return this.IPAddressField;
			}
			set
			{
				if (!object.ReferenceEquals(this.IPAddressField, value))
				{
					this.IPAddressField = value;
					this.RaisePropertyChanged("IPAddress");
				}
			}
		}
		[DataMember]
		internal ShapeBase MapView
		{
			get
			{
				return this.MapViewField;
			}
			set
			{
				if (!object.ReferenceEquals(this.MapViewField, value))
				{
					this.MapViewField = value;
					this.RaisePropertyChanged("MapView");
				}
			}
		}
		[DataMember]
		internal SizeOfint ScreenSize
		{
			get
			{
				return this.ScreenSizeField;
			}
			set
			{
				if (!object.ReferenceEquals(this.ScreenSizeField, value))
				{
					this.ScreenSizeField = value;
					this.RaisePropertyChanged("ScreenSize");
				}
			}
		}
		protected void RaisePropertyChanged(string propertyName)
		{
			PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
			if (propertyChanged != null)
			{
				propertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
			}
		}
	}
}
